#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <limits.h>
#include <ctype.h>

#define SET_BIT(a, i)	((a) |= (1 << (i)))
#define UNSET_BIT(a, i)	((a) &= ~(1 << (i)))
#define GET_BIT(a, i)	(((a) >> (i)) & 1)

/*
 * TODO переделать с xor-ом и сдвигом
 */

int
main(int argc, char **argv)
{
	int in, out;
	register int i = 1;

	scanf("%d", &in);
	out = in;
	while (i < CHAR_BIT * (sizeof in) - 1) {
		if (GET_BIT(in, i + 1) ^ GET_BIT(in, i - 1))
			SET_BIT(out, i);
		else
			UNSET_BIT(out, i);
		i++;
	}

	fputs("in : ", stderr);
	for (i = 0; i < CHAR_BIT * (sizeof in); i++)
		fprintf(stderr, "%d", GET_BIT(in, i));
	fputs("\nout: ", stderr);
	for (i = 0; i < CHAR_BIT * (sizeof in); i++)
		fprintf(stderr, "%d", GET_BIT(out, i));
	fputc('\n', stderr);

	printf("%d\n", out);

	return 0;
}
